by R. Grothmann
Maxima has the Laplace transform and its inverse. Applying this is one method to solve partial differential equations.
Let us solve the following equation
That is a linear, non-homogenous equation.
For the Laplace method, we write the equation in the following way.
>ode &= 'diff(y(t),t,2)+5*'diff(y(t),t)+4*y(t)=t;
The initial values can be formulated in terms of conditions for y(t).
>&atvalue(y(t),t=0,0); ... &atvalue('diff(y(t),t),t=0,0);
Compute the Laplace transform of the equation, and solve it for the Laplace transformation term.
>&laplace(ode,t,s), sol &= solve(%,'laplace(y(t),t,s))
2 s laplace(y(t), t, s) + 5 s laplace(y(t), t, s) 1 + 4 laplace(y(t), t, s) = -- 2 s 1 [laplace(y(t), t, s) = ----------------] 4 3 2 s + 5 s + 4 s
Now we can apply the inverse transform to the right hand side and get the solution.
>function ysol(t) &= ilt(rhs(sol[1]),s,t)
- t - 4 t E E t 5 ---- - ------ + - - -- 3 48 4 16
Of course, ode2 can do this equation too.
>ode &= 'diff(y,t,2)+5*'diff(y,t)+4*y=t
2 d y dy --- + 5 -- + 4 y = t 2 dt dt
However, we get an answer with constants.
>sol &= ode2(ode,y,t)
- t - 4 t 4 t - 5 y = %k1 E + %k2 E + ------- 16
With ic2 (two initial conditions), we can compute the constants.
>&ic2(sol,t=0,y=0,'diff(y,t)=0)
- t - 4 t E E 4 t - 5 y = ---- - ------ + ------- 3 48 16
We can also solve for the constants by hand.
>&solve([at(rhs(sol),t=0)=0,diffat(rhs(sol),t=0)=0],[%k1,%k2]), ... &sol with %[1]
1 1 [[%k1 = -, %k2 = - --]] 3 48 - t - 4 t E E 4 t - 5 y = ---- - ------ + ------- 3 48 16
This differential equation can also be solved in the following way. We first solve the homogenuous equation
using y=exp(h*t). This yields a polynomial for h.
>&solve(h^2+5*h+4=0)
[h = - 4, h = - 1]
We get the solutions
Then we find a special solution using the ansatz
>yab &= a*t+b
a t + b
We can solve this comparing coefficients.
>&diff(yab,t,2)+5*diff(yab,t)+4*yab|ratsimp, ... &solve([coeff(%,t,0)=0,coeff(%,t,1)=1],[a,b])
4 a t + 4 b + 5 a 1 5 [[a = -, b = - --]] 4 16